home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-SPAR.{_6 / VADDRS.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  3KB  |  66 lines

  1. /* $Id: vaddrs.h,v 1.21 1996/10/07 03:03:02 davem Exp $ */
  2. #ifndef _SPARC_VADDRS_H
  3. #define _SPARC_VADDRS_H
  4.  
  5. #include <asm/head.h>
  6.  
  7. /* asm-sparc/vaddrs.h:  Here will be define the virtual addresses at
  8.  *                      which important I/O addresses will be mapped.
  9.  *                      For instance the timer register virtual address
  10.  *                      is defined here.
  11.  *
  12.  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
  13.  */
  14.  
  15. /* I can see only one reason why we should have statically defined
  16.  * mappings for devices and is the speedup improvements of not loading
  17.  * a pointer and then the value in the assembly code
  18.  */
  19. #define  IOBASE_VADDR   0xfe000000  /* Base for mapping pages */
  20. #define  IOBASE_LEN     0x00300000  /* Length of the IO area */
  21. #define  IOBASE_END     0xfe300000
  22. #define  DVMA_VADDR     0xfff00000  /* Base area of the DVMA on suns */
  23. #define  DVMA_LEN       0x00040000  /* Size of the DVMA address space */
  24. #define  DVMA_END       0xfff40000
  25.  
  26. /* IOMMU Mapping area, must be on a 16MB boundary!  Note this
  27.  * doesn't count the DVMA areas, the prom lives between the
  28.  * iommu mapping area (for scsi transfer buffers) and the
  29.  * dvma upper range (for lance packet ring buffers).
  30.  */
  31. #define  IOMMU_VADDR    0xff000000
  32. #define  IOMMU_LEN      0x00c00000
  33. #define  IOMMU_END      0xffc00000 /* KADB debugger vm starts here */
  34.  
  35. /* On the sun4/4c we don't need an IOMMU area, but we need a place
  36.  * to reliably map locked down kernel data.  This includes the
  37.  * task_struct and kernel stack pages of each process plus the
  38.  * scsi buffers during dvma IO transfers, also the floppy buffers
  39.  * during pseudo dma which runs with traps off (no faults allowed).
  40.  * Some quick calculations yield:
  41.  *       NR_TASKS <512> * (3 * PAGE_SIZE) == 0x600000
  42.  * Subtract this from 0xc00000 and you get 0x927C0 of vm left
  43.  * over to map SCSI dvma + floppy pseudo-dma buffers.  So be
  44.  * careful if you change NR_TASKS or else there won't be enough
  45.  * room for it all.
  46.  */
  47. #define  SUN4C_LOCK_VADDR  0xff000000
  48. #define  SUN4C_LOCK_LEN    0x00c00000
  49. #define  SUN4C_LOCK_END    0xffc00000
  50.  
  51. /* On sun4m machines we need per-cpu virtual areas */
  52. #define  PERCPU_VADDR   0xffc00000  /* Base for per-cpu virtual mappings */
  53. #define  PERCPU_ENTSIZE 0x00100000
  54. #define  PERCPU_LEN     ((PERCPU_ENTSIZE*NCPUS))
  55.  
  56. /* per-cpu offsets */
  57. #define  PERCPU_TBR_OFFSET      0x00000      /* %tbr, mainly used for identification. */
  58. #define  PERCPU_KSTACK_OFFSET   0x01000      /* Beginning of kernel stack for this cpu */
  59. #define  PERCPU_MBOX_OFFSET     0x03000      /* Prom SMP Mailbox */
  60. #define  PERCPU_CPUID_OFFSET    0x04000      /* Per-cpu ID number. */
  61. #define  PERCPU_ISALIVE_OFFSET  0x04004      /* Has CPU been initted yet? */
  62. #define  PERCPU_ISIDLING_OFFSET 0x04008      /* Is CPU in idle loop spinning? */
  63.  
  64. #endif /* !(_SPARC_VADDRS_H) */
  65.  
  66.